class Watcher {
    constructor(vm, key, cb) {
       this.vm = vm
        // data中的属性名称
       this.key = key
        // 回调函数负责更新视图
        this.cb = cb

        // 当前的watcher对象记录到dep类的静态属性target
        Dep.target = this
        // 触发get方法，在get方法中会调用addSub
        this.oldValue = vm[key] //这里当我们访问这个属性就会去触发get方法 收集依赖
        Dep.target = null
    } 
    // 当数据发生变化的时候更新视频
    update () {
        let newValue = this.vm[this.key]
        if(this.oldValue === newValue) return 

        this.cb(newValue)
    }

}